package cn.com.bluemoon.daps.model.dto;


import cn.com.bluemoon.daps.common.domain.BaseModel;
import cn.com.bluemoon.daps.common.enums.DatabaseType;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;

@Data
public class ModelInfoDto extends BaseModel<ModelInfoDto> {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "表主键id")
    private String id;

    @ApiModelProperty(value = "数据源id")
    @NotNull(message = "数据源不能为空")
    private String dataSourceId;

    @ApiModelProperty(value = "模型描述")
    @NotNull(message = "模型描述不能为空")
    private String description;

    @ApiModelProperty(value = "模型名称")
    @NotNull(message = "模型名称不能为空")
    private String name;

    @ApiModelProperty(value = "模型对应的系统分类,1: BUSINESS_SYS 业务系统,2: WAREHOUSE_SYS 数仓系统,3: DATA_PRODUCE 数据产品,4: OTHER 其他")
    @NotNull(message = "系统分类不能为空")
    private Integer sysType;

    @ApiModelProperty(value = "关联系统id")
    @NotNull(message = "系统名称不能为空")
    private String systemId;

    @ApiModelProperty(value = "关联系统id")
    @NotNull(message = "系统名称不能为空")
    private DatabaseType databaseType;

    @ApiModelProperty(value = "关联系统id")
    @TableField(exist = false)
    private Integer tableNum;

    @ApiModelProperty(value = "是否属于当前用户维护的模型")
    @TableField(exist = false)
    private boolean belongTo;

    @ApiModelProperty(value = "1表示公共模型，0/null表示非公共模型")
    private Boolean commonModel;

    @ApiModelProperty("模型管理员")
    private String modelAdmin;

    @ApiModelProperty(value = "模型类型，1表示er模型，2表示星型模型")
    private Integer modelType;

    @ApiModelProperty(value = "是否使用公共模型，1表示是，0表示否")
    private Boolean isUseCommonModel;

    /**
     * 1: 现代渠道,2: 电商,3: 财务,4: 供应链,5: 人事行政后勤,6: 社区（含高校等）,7: 洗衣服务,8: 月亮商城,9: 客服,10: 管理学院,
     */
    @ApiModelProperty(value = "业务线：1: 现代渠道,2: 电商,3: 财务,4: 供应链,5: 人事行政后勤,6: 社区（含高校等）,7: 洗衣服务,8: 月亮商城,9: 客服,10: 管理学院")
    private Integer businessLine;

    @ApiModelProperty(value = "是否进行同步生产操作，默认为是")
    private Boolean isSyncProd;
}
